﻿#include "stdafx.h"
//#include <afxwin.h>
#include "Ddb.h"
//////////////////////////////////////////////////////////////////////////////
//构造函数
DDB::DDB()
{
	
}

//析构函数
DDB::~DDB()
{

}
//////////////////////////////////////////////////////////////////////////////

//在相关设备显示DDB位图重载函数
//输入参数顺序     参数功能 
//1:pDC            欲显示设备名称
//2:uResID         位图资源名
//3:*nPosX,nPosY   位图的横纵坐标显示(默认为0,0)
//3:*rect          位图的区域显示   ?
void DDB::DisplayDDB(CDC *pDC, LPCTSTR uResID, int nPosX, int nPosY)
{
	CDC dcMem;										//建立内存设备
	dcMem.CreateCompatibleDC(pDC);					//使内存设备和pDC设备兼容
	CBitmap bitmap;									//建立位图实例
	BITMAP mapInfo;									//建立位图信息实例

	bitmap.LoadBitmap(uResID);						//加载位图资源
	bitmap.GetBitmap(&mapInfo);						//获取位图信息

	CBitmap *pOldBitmap = dcMem.SelectObject(&bitmap);  //保存原有设备，载入新设备
	pDC ->BitBlt(nPosX, nPosY, mapInfo.bmWidth, mapInfo.bmHeight, &dcMem, 0, 0, SRCCOPY);
	//从内存设备传送位图到pDC设备
	pDC ->SelectObject(pOldBitmap);					//恢复原有设备(删除原有设备)
}

//在相关设备显示DDB位图重载函数
//输入参数顺序     参数功能 
//1:pDC            欲显示设备名称
//2:uResID         位图资源名
//3:*nPosX,nPosY   位图的横纵坐标显示(默认为0,0)
//3:*rect          位图的区域显示
void DDB::DisplayDDB(CDC *pDC, LPCTSTR uResID, CRect rect)
{
	CDC dcMem;										//建立内存设备
	dcMem.CreateCompatibleDC(pDC);					//使内存设备和pDC设备兼容
	CBitmap bitmap;									//建立位图实例
	BITMAP mapInfo;									//建立位图信息实例

	bitmap.LoadBitmap(uResID);						//加载位图资源
	bitmap.GetBitmap(&mapInfo);						//获取位图信息

	CBitmap *pOldBitmap = dcMem.SelectObject(&bitmap);	//保存原有设备，载入新设备
	pDC ->BitBlt(rect.left, rect.top, mapInfo.bmWidth, mapInfo.bmHeight, &dcMem, 0, 0, SRCCOPY);
	//从内存设备传送位图到pDC设备
	pDC ->SelectObject(pOldBitmap);					//恢复原有设备(删除原有设备)
}
